<?php
/**
 * Idea Framework (http://www.ideaphp.net/)
 *
 * @author    Huan Song <ideaphp@gmail.com>
 * @link      http://www.ideaphp.net/
 * @copyright Copyright (c) 2011-2013 http://www.ideaphp.net/ All rights reserved.
 * @license   http://www.apache.org/licenses/LICENSE-2.0
 */

namespace idea\ap;

/**
 * UserIdentity class file
 * 用户身份管理类
 * @author 宋欢 <ideaphp@gmail.com>
 * @version $Id: UserIdentity.php 1 2013-04-05 01:08:06Z huan.song $
 * @package idea.ap
 * @since 1.0
 */
class UserIdentity
{
    /**
     * @var string 用户ID值在Session中以此名字为键，实际项目开发中尽量修改此名
     */
    const SESSION_KEY_ID = 'ID_user_identity_id';

    /**
     * @var integer 用户ID
     */
    protected static $_id = 0;

    /**
     * 判断用户是否已登录
     * @return boolean
     */
    public static function isLogin()
    {
        return self::getId() > 0;
    }

    /**
     * 获取用户ID
     * @return integer
     */
    public static function getId()
    {
        if (self::$_id <= 0) {
            self::$_id = self::getRegisterID();
        }

        return self::$_id;
    }

    /**
     * 通从Session中获取用户ID，实际项目开发中尽量自己开发加密存储ID的方式
     * @return integer
     */
    public static function getRegisterID()
    {
        return (int) Ap::getSession()->get(self::SESSION_KEY_ID, 0);
    }

    /**
     * 将用户ID添加到Session中，实际项目开发中尽量自己开发加密存储ID的方式
     * @param integer $id
     * @return void
     */
    public static function registerID($id)
    {
        Ap::getSession()->add(self::SESSION_KEY_ID, (int) $id);
    }

    /**
     * 从Session中删除用户ID，实际项目开发中尽量自己开发加密存储ID的方式
     * @return mixed
     */
    public static function unregisterID()
    {
        return Ap::getSession()->remove(self::SESSION_KEY_ID);
    }
}
